﻿using System;
using System.Collections.Generic;
using COMMON;
using DAL;
using VO;

namespace BLL
{
    public class SorteioBLL
    {

        #region Sorteio
        public static Retorno<Cliente> Sorteio(int idAtendente, int idCampanha = 0)
        {
            var objReturn = new Retorno<Cliente>();
            try
            {
                //Retorna ID do cliente sorteado
                var ob = new SorteioDAL().Sorteia(idAtendente, idCampanha);
                objReturn.ID = ob.idCliente;
                objReturn.List = new List<Cliente>();
                objReturn.List.Add(new Cliente {dtInicioAtendimento = ob.dtInicioAtendimento, dtAgendamento = ob.dtAgendamento, idCliente = ob.idCliente, idCampanha = ob.idCampanha, idFila = ob.idFila, TipoSorteio = ob.TipoSorteio });
                if (objReturn.ID > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }

            return objReturn;

        }
        #endregion

        #region ValidaVinculadoAgendado
        public static Retorno<Fila> ValidaVinculadoAgendado(int idCampanha, int idAtendente)
        {
            var retorno = new Retorno<Fila>();
            retorno.Error = Enumerator.Error.NoRegistry;

            try
            {
                var obj = new Fila();
                obj.idCampanha = idCampanha;
                obj.idAtendente = idAtendente;

                //verificamos se existe cliente vinculado a um atendente
                var fila = new FilaDAL();
                var objFila = fila.SelectFilaOperador(obj);
                if (objFila != null)
                {
                    retorno.Error = Enumerator.Error.Success;
                    retorno.List = objFila;
                }
                else
                {
                    //verificamos se existe cliente agendado para o operador
                    var objCliente = fila.SelectFilaCampanhaOperador(obj);
                    if (objCliente != null)
                    {
                        retorno.Error = Enumerator.Error.Success;
                        retorno.List = objCliente;
                    }
                }
            }
            catch (Exception ex)
            {
                retorno.Error = Enumerator.Error.Failed;
                retorno.Message = ex.Message;
            }

            return retorno;
        }
        #endregion

        #region AtendeClienteConsulta
        public static Retorno<Fila> AtendeClienteConsulta(int idAtendente, int idCampanha, int idCliente)
        {
            var retorno = new Retorno<Fila>();
            try
            {
                retorno.List = new List<Fila>();
                retorno.List.Add(new SorteioDAL().AtendeClienteConsulta(idAtendente, idCampanha, idCliente));
                if (retorno.List.Count > 0)
                {
                    retorno.Error = Enumerator.Error.Success;
                    retorno.Message = "OK";
                }
                else
                {
                    retorno.Error = Enumerator.Error.NoRegistry;
                    retorno.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                retorno.Error = Enumerator.Error.Failed;
                retorno.Message = ex.Message;
            }
            return retorno;
        }
        #endregion

    }
}